package com.hjm.project.profitSummary.profitSummary.domain;

import com.hjm.framework.aspectj.lang.annotation.Excel;
import com.hjm.framework.web.domain.BaseEntity;
import com.hjm.project.agentInfo.agentInfo.domain.AgentInfo;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import java.math.BigDecimal;

/**
 * 日分润汇总对象 profit_summary
 *
 * @author LOVE
 * @date 2020-11-27
 */
public class ProfitSummary extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 交易日期
     */
    @Excel(name = "交易日期")
    private String localdate;

    /**
     * 服务商编号
     */
    @Excel(name = "服务商编号")
    private String agentNum;

    /**
     * 服务商名称
     */
    @Excel(name = "服务商名称")
    private String agentName;

    /**
     * 渠道经理（钱宝销售人员）
     */
    @Excel(name = "渠道经理", readConverterExp = "钱宝销售人员")
    private String channelName;

    /**
     * 交易总金额
     */
    @Excel(name = "交易总金额")
    private BigDecimal amount;

    /**
     * 交易总笔数
     */
    @Excel(name = "交易总笔数")
    private Long count;

    /**
     * 商户手续费总金额
     */
    @Excel(name = "商户手续费总金额")
    private BigDecimal merCharge;

    /**
     * 附加手续费总金额
     */
    @Excel(name = "附加手续费总金额")
    private BigDecimal surchargeCharge;

    /**
     * 手续费总金额 = 商户手续费总金额 + 附加手续费总金额
     */
    @Excel(name = "手续费总金额 = 商户手续费总金额 + 附加手续费总金额")
    private BigDecimal charge;

    /**
     * 商户手续费分润(本级)
     */
    @Excel(name = "商户手续费分润(本级)")
    private BigDecimal chargeProfit;

    /**
     * 附加手续费分润(本级)
     */
    @Excel(name = "附加手续费分润(本级)")
    private BigDecimal surchargeProfit;

    /**
     * (本级)分润总金额 = 商户手续费分润(本级) + 附加手续费分润(本级)
     */
    @Excel(name = "(本级)分润总金额 = 商户手续费分润(本级) + 附加手续费分润(本级)")
    private BigDecimal pipMoney;

    /**
     * 分润类型 （0 银行卡收单 1 云闪付 2-微信 3-支付宝 4-银联二维码）
     */
    @Excel(name = "分润类型 ", readConverterExp = "0=,银=行卡收单,1=,云=闪付,2=-微信,3=-支付宝,4=-银联二维码")
    private Long tradeType;

    /**
     * 添加时间
     */
    @Excel(name = "添加时间")
    private String createdate;

    /**
     * 添加人
     */
    @Excel(name = "添加人")
    private String creatman;

    /**
     * 服务商等级
     */
    @Excel(name = "服务商等级")
    private Long agentLevel;

    /**
     * 结算流水号
     */
    @Excel(name = "结算流水号")
    private String settleSerial;

    /**
     * 商户手续费分润(本级及以下)
     */
    @Excel(name = "商户手续费分润(本级及以下)")
    private BigDecimal chargeProfitBelow;

    /**
     * 附加手续费分润(本级及以下)
     */
    @Excel(name = "附加手续费分润(本级及以下)")
    private BigDecimal surchargeProfitBelow;

    /**
     * (本级及以下)分润总金额 = 商户手续费分润(本级及以下) + 附加手续费分润(本级及以下)
     */
    @Excel(name = "(本级及以下)分润总金额 = 商户手续费分润(本级及以下) + 附加手续费分润(本级及以下)")
    private BigDecimal pipMoneyBelow;

    /**
     * 是否逐级 0：开启 1：关闭
     */
    @Excel(name = "是否逐级 0：开启 1：关闭")
    private Long isgradually;

    /**
     * 本级税
     */
    @Excel(name = "本级税")
    private String levelTax;

    /**
     * 本级及以下税
     */
    @Excel(name = "本级及以下税")
    private String belowTax;

    /**
     * 本级扣税后分润金额
     */
    @Excel(name = "本级扣税后分润金额")
    private BigDecimal levelTaxProfit;

    /**
     * 本级及以下扣税后分润金额
     */
    @Excel(name = "本级及以下扣税后分润金额")
    private BigDecimal belowTaxProfit;

    /**
     * 分润税差
     */
    @Excel(name = "分润税差")
    private String profitTaxDiff;

    /**
     * 终端类型 0-传统Pos 1-Mpos 2-智能Pos
     */
    @Excel(name = "终端类型 0-传统Pos 1-Mpos 2-智能Pos")
    private Long posType;

    /**
     * (税后本级及以下)分润总金额 = 本级扣税后分润金额(本级及以下) + 附加手续费分润(本级及以下)
     */
    @Excel(name = "(税后本级及以下)分润总金额 = 本级扣税后分润金额(本级及以下) + 附加手续费分润(本级及以下)")
    private BigDecimal taxPipMoneyBelow;

    /**
     * (本级税后)分润总金额 = 本级扣税后分润金额(本级) + 附加手续费分润(本级)
     */
    @Excel(name = "(本级税后)分润总金额 = 本级扣税后分润金额(本级) + 附加手续费分润(本级)")
    private BigDecimal taxPipMoney;

    /**
     * 本级附加费税
     */
    @Excel(name = "本级附加费税")
    private BigDecimal addlevelTax;

    /**
     * 本级及以下附加费税
     */
    @Excel(name = "本级及以下附加费税")
    private BigDecimal addbelowTax;

    /**
     * 本级附加费扣税后分润金额
     */
    @Excel(name = "本级附加费扣税后分润金额")
    private BigDecimal addlevelTaxProfit;

    /**
     * 本级及以下附加费扣税后分润金额
     */
    @Excel(name = "本级及以下附加费扣税后分润金额")
    private BigDecimal addbelowTaxProfit;

    /**
     * 附加费分润税差
     */
    @Excel(name = "附加费分润税差")
    private BigDecimal addprofitTaxDiff;

    private AgentInfo agentInfo;

    public AgentInfo getAgentInfo() {
        if (null == agentInfo) {
            agentInfo = new AgentInfo();
        }
        return agentInfo;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getLocaldate() {
        return localdate;
    }

    public void setLocaldate(String localdate) {
        this.localdate = localdate;
    }

    public String getAgentNum() {
        return agentNum;
    }

    public void setAgentNum(String agentNum) {
        this.agentNum = agentNum;
    }

    public String getAgentName() {
        return agentName;
    }

    public void setAgentName(String agentName) {
        this.agentName = agentName;
    }

    public String getChannelName() {
        return channelName;
    }

    public void setChannelName(String channelName) {
        this.channelName = channelName;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public Long getCount() {
        return count;
    }

    public void setCount(Long count) {
        this.count = count;
    }

    public BigDecimal getMerCharge() {
        return merCharge;
    }

    public void setMerCharge(BigDecimal merCharge) {
        this.merCharge = merCharge;
    }

    public BigDecimal getSurchargeCharge() {
        return surchargeCharge;
    }

    public void setSurchargeCharge(BigDecimal surchargeCharge) {
        this.surchargeCharge = surchargeCharge;
    }

    public BigDecimal getCharge() {
        return charge;
    }

    public void setCharge(BigDecimal charge) {
        this.charge = charge;
    }

    public BigDecimal getChargeProfit() {
        return chargeProfit;
    }

    public void setChargeProfit(BigDecimal chargeProfit) {
        this.chargeProfit = chargeProfit;
    }

    public BigDecimal getSurchargeProfit() {
        return surchargeProfit;
    }

    public void setSurchargeProfit(BigDecimal surchargeProfit) {
        this.surchargeProfit = surchargeProfit;
    }

    public BigDecimal getPipMoney() {
        return pipMoney;
    }

    public void setPipMoney(BigDecimal pipMoney) {
        this.pipMoney = pipMoney;
    }

    public Long getTradeType() {
        return tradeType;
    }

    public void setTradeType(Long tradeType) {
        this.tradeType = tradeType;
    }

    public String getCreatedate() {
        return createdate;
    }

    public void setCreatedate(String createdate) {
        this.createdate = createdate;
    }

    public String getCreatman() {
        return creatman;
    }

    public void setCreatman(String creatman) {
        this.creatman = creatman;
    }

    public Long getAgentLevel() {
        return agentLevel;
    }

    public void setAgentLevel(Long agentLevel) {
        this.agentLevel = agentLevel;
    }

    public String getSettleSerial() {
        return settleSerial;
    }

    public void setSettleSerial(String settleSerial) {
        this.settleSerial = settleSerial;
    }

    public BigDecimal getChargeProfitBelow() {
        return chargeProfitBelow;
    }

    public void setChargeProfitBelow(BigDecimal chargeProfitBelow) {
        this.chargeProfitBelow = chargeProfitBelow;
    }

    public BigDecimal getSurchargeProfitBelow() {
        return surchargeProfitBelow;
    }

    public void setSurchargeProfitBelow(BigDecimal surchargeProfitBelow) {
        this.surchargeProfitBelow = surchargeProfitBelow;
    }

    public BigDecimal getPipMoneyBelow() {
        return pipMoneyBelow;
    }

    public void setPipMoneyBelow(BigDecimal pipMoneyBelow) {
        this.pipMoneyBelow = pipMoneyBelow;
    }

    public Long getIsgradually() {
        return isgradually;
    }

    public void setIsgradually(Long isgradually) {
        this.isgradually = isgradually;
    }

    public String getLevelTax() {
        return levelTax;
    }

    public void setLevelTax(String levelTax) {
        this.levelTax = levelTax;
    }

    public String getBelowTax() {
        return belowTax;
    }

    public void setBelowTax(String belowTax) {
        this.belowTax = belowTax;
    }

    public BigDecimal getLevelTaxProfit() {
        return levelTaxProfit;
    }

    public void setLevelTaxProfit(BigDecimal levelTaxProfit) {
        this.levelTaxProfit = levelTaxProfit;
    }

    public BigDecimal getBelowTaxProfit() {
        return belowTaxProfit;
    }

    public void setBelowTaxProfit(BigDecimal belowTaxProfit) {
        this.belowTaxProfit = belowTaxProfit;
    }

    public String getProfitTaxDiff() {
        return profitTaxDiff;
    }

    public void setProfitTaxDiff(String profitTaxDiff) {
        this.profitTaxDiff = profitTaxDiff;
    }

    public Long getPosType() {
        return posType;
    }

    public void setPosType(Long posType) {
        this.posType = posType;
    }

    public BigDecimal getTaxPipMoneyBelow() {
        return taxPipMoneyBelow;
    }

    public void setTaxPipMoneyBelow(BigDecimal taxPipMoneyBelow) {
        this.taxPipMoneyBelow = taxPipMoneyBelow;
    }

    public BigDecimal getTaxPipMoney() {
        return taxPipMoney;
    }

    public void setTaxPipMoney(BigDecimal taxPipMoney) {
        this.taxPipMoney = taxPipMoney;
    }

    public BigDecimal getAddlevelTax() {
        return addlevelTax;
    }

    public void setAddlevelTax(BigDecimal addlevelTax) {
        this.addlevelTax = addlevelTax;
    }

    public BigDecimal getAddbelowTax() {
        return addbelowTax;
    }

    public void setAddbelowTax(BigDecimal addbelowTax) {
        this.addbelowTax = addbelowTax;
    }

    public BigDecimal getAddlevelTaxProfit() {
        return addlevelTaxProfit;
    }

    public void setAddlevelTaxProfit(BigDecimal addlevelTaxProfit) {
        this.addlevelTaxProfit = addlevelTaxProfit;
    }

    public BigDecimal getAddbelowTaxProfit() {
        return addbelowTaxProfit;
    }

    public void setAddbelowTaxProfit(BigDecimal addbelowTaxProfit) {
        this.addbelowTaxProfit = addbelowTaxProfit;
    }

    public BigDecimal getAddprofitTaxDiff() {
        return addprofitTaxDiff;
    }

    public void setAddprofitTaxDiff(BigDecimal addprofitTaxDiff) {
        this.addprofitTaxDiff = addprofitTaxDiff;
    }

    public void setAgentInfo(AgentInfo agentInfo) {
        this.agentInfo = agentInfo;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("localdate", getLocaldate())
                .append("agentNum", getAgentNum())
                .append("agentName", getAgentName())
                .append("channelName", getChannelName())
                .append("amount", getAmount())
                .append("count", getCount())
                .append("merCharge", getMerCharge())
                .append("surchargeCharge", getSurchargeCharge())
                .append("charge", getCharge())
                .append("chargeProfit", getChargeProfit())
                .append("surchargeProfit", getSurchargeProfit())
                .append("pipMoney", getPipMoney())
                .append("tradeType", getTradeType())
                .append("createdate", getCreatedate())
                .append("creatman", getCreatman())
                .append("agentLevel", getAgentLevel())
                .append("settleSerial", getSettleSerial())
                .append("chargeProfitBelow", getChargeProfitBelow())
                .append("surchargeProfitBelow", getSurchargeProfitBelow())
                .append("pipMoneyBelow", getPipMoneyBelow())
                .append("isgradually", getIsgradually())
                .append("levelTax", getLevelTax())
                .append("belowTax", getBelowTax())
                .append("levelTaxProfit", getLevelTaxProfit())
                .append("belowTaxProfit", getBelowTaxProfit())
                .append("profitTaxDiff", getProfitTaxDiff())
                .append("posType", getPosType())
                .append("taxPipMoneyBelow", getTaxPipMoneyBelow())
                .append("taxPipMoney", getTaxPipMoney())
                .append("addlevelTax", getAddlevelTax())
                .append("addbelowTax", getAddbelowTax())
                .append("addlevelTaxProfit", getAddlevelTaxProfit())
                .append("addbelowTaxProfit", getAddbelowTaxProfit())
                .append("addprofitTaxDiff", getAddprofitTaxDiff())
                .append("agentInfo", getAgentInfo().toString())
                .toString();
    }
}
